public class GitCmdCheatSheet {
    public static void main(String[] args) {
        /* ========== 1. 查询类 ========== */
        // 模板：git status
        // 用例：
        System.out.println("PS> git status");

        // 模板：git log --oneline
        // 用例：最近 5 条
        System.out.println("PS> git log --oneline -5");

        // 模板：git branch -a
        // 用例：列出本地+远程全部分支
        System.out.println("PS> git branch -a");

        // 模板：git remote -v
        // 用例：查看远程地址
        System.out.println("PS> git remote -v");

        // 模板：git log -p -- <文件名>
        // 用例：看 Main.java 历次改动
        System.out.println("PS> git log -p -- src/Main.java");

        // 模板：git blame <文件名>
        // 用例：逐行追责
        System.out.println("PS> git blame src/Example.java");

        /* ========== 2. 刷新类 ========== */
        // 模板：git pull
        // 用例：拉并合并远程 master
        System.out.println("PS> git pull origin master");

        // 模板：git fetch
        // 用例：只取不合并
        System.out.println("PS> git fetch upstream");

        // 模板：git checkout -- <文件名>
        // 用例：放弃工作区修改
        System.out.println("PS> git checkout -- src/Util.java");

        /* ========== 3. 推送类 ========== */
        // 模板：git push -u origin <分支>
        // 用例：首次推送本地 dev
        System.out.println("PS> git push -u origin dev");

        // 模板：git push
        // 用例：日常推送（已跟踪）
        System.out.println("PS> git push");

        // 模板：git push origin --delete <分支>
        // 用例：删远程 hotfix-01
        System.out.println("PS> git push origin --delete hotfix-01");

        /* ========== 4. 修改类 ========== */
        // 模板：git commit --amend -m "新说明"
        // 用例：改最后一次提交信息
        System.out.println("PS> git commit --amend -m \"fix: 修复空指针\"");

        // 模板：git reset HEAD <文件名>
        // 用例：把已 add 的文件撤回到未暂存
        System.out.println("PS> git reset HEAD Test.java");

        // 模板：git reset --hard <提交ID>
        // 用例：硬回退到 a8b3c2d
        System.out.println("PS> git reset --hard a8b3c2d");

        /* ========== 5. 重命名类 ========== */
        // 模板：git branch -m <旧> <新>
        // 用例：master → main
        System.out.println("PS> git branch -m master main");

        // 模板：git mv <原> <新>
        // 用例：文件改名并直接加入暂存
        System.out.println("PS> git mv OldUtil.java utils/StringUtil.java");

        /* ========== 6. 删除类 ========== */
        // 模板：git rm <文件名>
        // 用例：删编译产物并暂存
        System.out.println("PS> git rm out/production/App.class");

        // 模板：git branch -d <分支>
        // 用例：删本地已合并分支
        System.out.println("PS> git branch -d feature-x");

        // 模板：git remote remove <远程名>
        // 用例：移除 upstream 远程
        System.out.println("PS> git remote remove upstream");

        /* ========== 7. 列表类 ========== */
        // 模板：git tag
        // 用例：列 v1. 开头标签
        System.out.println("PS> git tag -l \"v1.*\"");

        // 模板：git config --list
        // 用例：看当前仓库配置
        System.out.println("PS> git config --list --local");
    }
}
